package cn.lzg.common.core.codec;

import cn.lzg.common.core.model.Request;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;

/**
 * <pre>
 * 数据包格式
 * +——----——+——-----——+——----——+——----——+——-----——+
 * |  包头	|  模块号   | 命令号   |   长度  |   数据    |
 * +——----——+——-----——+——----——+——----——+——-----——+
 * </pre>
 *
 */
public class RequestEncoder extends MessageToByteEncoder<Request>{

	@Override
	protected void encode(ChannelHandlerContext ctx, Request msg, ByteBuf out) throws Exception {
		//包头
		out.writeInt(Constants.HEADER_FLAG);
		//模块号
		out.writeShort(msg.getModule());
		//命令号
		out.writeShort(msg.getCmd());
		//数据长度
		int len_data = msg.getData()==null?0:msg.getData().length;
		
		if(len_data <=0) {//没有数据
			
		}else {
			out.writeInt(len_data);
			out.writeBytes(msg.getData());
		}
	}

}
